﻿using System;
using System.Data;
using System.Data.SqlClient;
using Evaluation3.interfaces ;
using Evaluation3.classes ;
using Evaluation3.utils ;

namespace Evaluation3.services
{
	/// <summary>
	/// Summary description for cucilServices.
	/// </summary>
	public class cucilServices
    {
        #region Variables
        int iMaHoiDong;
        string sTenHoiDong;
        int iMaDoanhNghiep;
        string sTenDoanhNghiep;
        DateTime dNgayThanhLap;
        bool bStatus;
        string sQuyetDinh;
        string sNguoiKy;
        int iMaThanhVien;
        int iMaHoiDongChamDiem;

        string sSearchInput;
        string sShortBy;

        string sqlStr;
        dataUtils objdataUtils;
        SqlParameter[] parr;
        #endregion

        #region Constructor
        /// <summary>
        /// Khởi tạo giá trị ban đầu cho các biến
        /// </summary>
        public cucilServices()
		{
            iMaHoiDong = 0;
            sTenHoiDong = string.Empty;
            iMaDoanhNghiep = 0;
            sTenDoanhNghiep = string.Empty;
            dNgayThanhLap = DateTime.Now;
            bStatus = true;
            sQuyetDinh = string.Empty;
            sNguoiKy = string.Empty;
            sSearchInput = "''";
            sShortBy = "TenHoiDong";
            iMaThanhVien = 0;
            iMaHoiDongChamDiem = 0;

            sqlStr = string.Empty;            
        }
        #endregion

        #region Properties
        public int MaHoiDong { get { return iMaHoiDong; } set { iMaHoiDong = value; } }
        public string TenHoiDong {get {return sTenHoiDong;} set {sTenHoiDong = value;} }
        public int MaDoanhNghiep { get { return iMaDoanhNghiep; } set { iMaDoanhNghiep = value; } }
        public DateTime NgayThanhLap {get {return dNgayThanhLap;} set{dNgayThanhLap = value;}}
        public bool Status {get {return bStatus;} set {bStatus = value;}}
        public string QuyetDinh {get {return sQuyetDinh;} set {sQuyetDinh = value;}}
        public string NguoiKy { get { return sNguoiKy; } set { sNguoiKy = value; } }
        public string SearchInput { get { return sSearchInput; } set { sSearchInput = value; } }
        public string ShortBy { get { return sShortBy; } set { sShortBy = value; } }
        public int MaThanhVien { get { return iMaThanhVien; } set { iMaThanhVien = value; } }
        public int MaHoiDongChamDiem { get { return iMaHoiDongChamDiem; } set { iMaHoiDongChamDiem = value; } }
        #endregion

        #region TuanTDT's Objects
        public void createNewCucil() {
			String sqlStr = "" ;
			//sqlStr = "EXECUTE TaoMoiHoiDong_PROC @TenHoiDong=N'"+TenHoiDong+"', @MaDoanhNghiep='"+MaDoanhNghiep+"', @NgayThanhLap='"+NgayThanhLap+"', @QuyetDinh=N'"+QuyetDinh+"', @NguoiKy=N'"+NguoiKy+"'" ;
			//conn.execute (sqlStr)
		}

		public void insert(cucilClass cucil) {
			string sql = "insert into Hoidong (tenhoidong, madoanhnghiep, ngaythanhlap,quetdinh,nguoiky,status)" ;
			sql = sql + "values('"+ cucil.Name + "',"+cucil.RefCompanyId+"','"+cucil.FoundedDate+"','";
			sql = sql + cucil.ExamineDate +"','"+cucil.Examiner+"',"+cucil.Status+")" ;
			dataUtils.EXECUTEQUERY(sql) ;
		}
		public void update(cucilClass cucil) {
			string sql = "update Hoidong set tenhoidong = '"+cucil.Name+"'" ;
		}
		public void delete(string cucil_Id){
			string sql = "delete * from Hoidong where mahoidong='"+cucil_Id+"'" ;
            dataUtils.EXECUTEQUERY(sql);
        }
        #endregion

        #region TùngLA's Object

        #region HD_TaoMoi()
        /// <summary>
        /// TùngLA 28-05-2007
        /// Hàm thực hiện việc tạo mới một Hội Đồng
        /// </summary>
        public void HD_TaoMoi()
        {
            sqlStr = "TaoMoiHoiDong_PROC";
            parr = new SqlParameter[5];
            parr[0] = new SqlParameter("@TenHoiDong", SqlDbType.NVarChar, 100);
            parr[0].Value = TenHoiDong;
            parr[1] = new SqlParameter("@MaDoanhNghiep", SqlDbType.Int);
            parr[1].Value = MaDoanhNghiep;
            parr[2] = new SqlParameter("@NgayThanhLap", SqlDbType.SmallDateTime);
            parr[2].Value = NgayThanhLap;
            parr[3] = new SqlParameter("@QuyetDinh", SqlDbType.NText);
            parr[3].Value = QuyetDinh;
            parr[4] = new SqlParameter("@NguoiKy", SqlDbType.NVarChar, 64);
            parr[4].Value = NguoiKy;

            dataUtils.ExecuteNonQuery(sqlStr, CommandType.StoredProcedure, parr);            

        }
        #endregion
        
        #region HD_Search()
        /// <summary>
        /// Tìm kiếm Hội đồng theo tên Hội đồng
        /// </summary>
        /// <returns>DataSet chứa kết quả</returns>
        public DataSet HD_Search()
        {
            sqlStr = "SELECT HoiDong.MaHoiDong, HoiDong.TenHoiDong, HoiDong.MaDoanhNghiep, DoanhNghiep.TenDoanhNghiep, HoiDong.NgayThanhLap, HoiDong.QuyetDinh, HoiDong.NguoiKy FROM HoiDong INNER JOIN DoanhNghiep ON HoiDong.MaDoanhNghiep = DoanhNghiep.MaDoanhNghiep WHERE (HoiDong.Status = 1) AND (DoanhNghiep.Status = 1) AND (HoiDong.TenHoiDong LIKE N'%' + @TenHoiDong + N'%') AND (HoiDong.MaDoanhNghiep = @MaDoanhNghiep)";
            parr = new SqlParameter[2];
            parr[0] = new SqlParameter("@TenHoiDong", SqlDbType.NVarChar, 50);
            parr[0].Value = SearchInput;
            parr[1] = new SqlParameter("@MaDoanhNghiep", SqlDbType.Int);
            parr[1].Value = MaDoanhNghiep;

            return dataUtils.ExecuteQuery(sqlStr, CommandType.Text, parr);
        }
        #endregion

        #region HD_Delete()
        public void HD_Delete()
        {
            sqlStr = "XoaHoiDong_PROC";
            parr = new SqlParameter[1];
            parr[0] = new SqlParameter("@MaHoiDong", SqlDbType.Int, 4);
            parr[0].Value = MaHoiDong;

            dataUtils.ExecuteNonQuery(sqlStr, CommandType.StoredProcedure, parr);
        }
        #endregion

        #region HD_Detail()
        /// <summary>
        /// Lấy thông tin 1 Hội Đồng cụ thể
        /// </summary>
        /// <returns>DataSet chứa kết quả</returns>
        public DataSet HD_Detail()
        {
            sqlStr = "HoiDong_Detail";
            parr = new SqlParameter[1];
            parr[0] = new SqlParameter("@MaHoiDong", SqlDbType.Int);
            parr[0].Value = MaHoiDong;

            return dataUtils.ExecuteQuery(sqlStr, CommandType.StoredProcedure, parr);
        }
        #endregion

        #region HD_SearchByHDCode()
        public DataSet HD_SearchbyHDCode()
        {
            sqlStr = "HoiDong_SearchByHDCode";
            parr = new SqlParameter[1];
            parr[0] = new SqlParameter("@MaHoiDong", SqlDbType.Int);
            parr[0].Value = MaHoiDong;

            return dataUtils.ExecuteQuery(sqlStr, CommandType.StoredProcedure, parr);
        }
        #endregion

        #region HD_CapNhat()
        /// <summary>
        /// Cập nhật lại thông tin HĐ vừa mới được sửa đổi
        /// </summary>
        public void HD_CapNhat()
        {
            sqlStr = "SuaHoiDong_PROC";
            parr = new SqlParameter[6];
            parr[0] = new SqlParameter("@MaHoiDong", SqlDbType.Int);
            parr[0].Value = MaHoiDong;
            parr[1] = new SqlParameter("@TenHoiDong", SqlDbType.NVarChar, 100);
            parr[1].Value = TenHoiDong;
            parr[2] = new SqlParameter("@MaDoanhNghiep", SqlDbType.Int);
            parr[2].Value = MaDoanhNghiep;
            parr[3] = new SqlParameter("@NgayThanhLap", SqlDbType.SmallDateTime);
            parr[3].Value = NgayThanhLap;
            parr[4] = new SqlParameter("@QuyetDinh", SqlDbType.NText);
            parr[4].Value = QuyetDinh;
            parr[5] = new SqlParameter("@NguoiKy", SqlDbType.NVarChar, 64);
            parr[5].Value = NguoiKy;

            dataUtils.ExecuteNonQuery(sqlStr, CommandType.StoredProcedure, parr);  
        }
        #endregion

        #region HD_ThemThanhVien()
        public void HD_ThemThanhVien()
        {
            sqlStr = "ThemTvVaoHD_PROC";
            parr = new SqlParameter[2];
            parr[0] = new SqlParameter("@MaHoiDong", SqlDbType.Int);
            parr[0].Value = MaHoiDong;
            parr[1] = new SqlParameter("@MaThanhVien", SqlDbType.Int);
            parr[1].Value = MaThanhVien;

            dataUtils.ExecuteNonQuery(sqlStr, CommandType.StoredProcedure, parr);  
        }
        #endregion

        #region HD_TVtrongHD()
        public DataSet HD_TVtrongHD()
        {
            sqlStr = "TVtrongHD";
            parr = new SqlParameter[1];
            parr[0] = new SqlParameter("@MaHoiDong", SqlDbType.Int);
            parr[0].Value = MaHoiDong;

            return dataUtils.ExecuteQuery(sqlStr, CommandType.StoredProcedure, parr);
        }

        #endregion

        #region HD_CheckTV()
        /// <summary>
        /// Kiểm tra xem thành viên vừa chọn đã tồn tại trong Hội đồng đó chưa
        /// </summary>
        /// <returns>false nếu thành viên đó chưa thuộc hội đồng đó</returns>
        public bool HD_CheckTV()
        {
            sqlStr = "SELECT * FROM HoiDongChamDiem WHERE (MaHoiDong ="+ MaHoiDong+") AND (MaThanhVien = "+ MaThanhVien +") AND (Status=1)";
            DataSet ds = dataUtils.ExecuteQuery(sqlStr, CommandType.Text, null);
            if (ds.Tables[0].Rows.Count > 0)
            {
                return true;
            }
            return false;
        }
        #endregion

        #region HD_LoaiTV()
        /// <summary>
        /// Loại bỏ một thành viên ra khỏi hội đồng
        /// </summary>        
        public void HD_LoaiTV()
        {
            sqlStr = "HD_LoaiBoThanhVien";
            parr = new SqlParameter[1];
            parr[0] = new SqlParameter("@MaHoiDongChamDiem", SqlDbType.Int);
            parr[0].Value = MaHoiDongChamDiem;
            dataUtils.ExecuteNonQuery(sqlStr, CommandType.StoredProcedure, parr);            
        }
        #endregion

        #endregion
    }
}
